from PIL import Image


def img_color_enhance(image):
    """用于图片识别时, 根据字符颜色处理图片, 将字符变成黑色, 放在白色背景,
    重新生成一张图片

    :image: 待处理的图片
    :returns: 返回处理后的图片列表, 一般列表第一个图片就是字符了.

    """
    width, height = image.size
    # 统计图片中所有像素的颜色, 返回列表 [(counts, color), ...]
    color_info = image.getcolors(width*height)
    # 按统计数排序
    #   颜色最多的是背景
    #   接下来是字符及干扰项的颜色
    #   哪些是需要的字符, 哪些是干扰项待生成图片后判断
    color_info = sorted(color_info, key=lambda x: x[0], reverse=True)

    size = len(color_info)
    ret = []
    for i in range(1, size):
        new_image = Image.new('RGB', image.size, (255, 255, 255))
        for x in range(image.size[0]):
            for y in range(image.size[1]):
                if image.getpixel((x, y)) == color_info[i][1]:
                    new_image.putpixel((x, y), (0, 0, 0))
                else:
                    new_image.putpixel((x, y), (255, 255, 255))
        ret.append(new_image)
    return ret
